<html>
<head><meta charset="utf-8"><title>rewriting libunwind in rust? · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html">rewriting libunwind in rust?</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="229921038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229921038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gankra <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229921038">(Mar 11 2021 at 20:33)</a>:</h4>
<p>So the mozilla low level tools team is looking at rewriting a lot of our crash handling/reporting/analyzing infra in rust (with the help of Sentry?) because breakpad is a disaster. One of the aspects of that is stackwalking, which means we might be incidentally reimplementing libunwind. Do y'all have any particular pain points with libunwind you would like addressed? Would you want to have a Rust version of libunwind? Do you have any Weird Requirements?</p>



<a name="229921233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229921233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gankra <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229921233">(Mar 11 2021 at 20:34)</a>:</h4>
<p>(just now working through our planning for the year so I don't have much to provide in terms of details)</p>



<a name="229922360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229922360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229922360">(Mar 11 2021 at 20:42)</a>:</h4>
<p>Works fine in interaction with <code>psm</code>/<code>stacker</code> is way up there in my list ^^</p>



<a name="229925530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229925530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229925530">(Mar 11 2021 at 21:04)</a>:</h4>
<p>There is a somewhat working rust "implementation" called <a href="https://github.com/gimli-rs/unwind-rs/">unwind-rs</a> but it only works on elf based unixes and isn't maintained.</p>



<a name="229925592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229925592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229925592">(Mar 11 2021 at 21:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="123586">nagisa</span> <a href="#narrow/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F/near/229922360">said</a>:</p>
<blockquote>
<p>Works fine in interaction with <code>psm</code>/<code>stacker</code> is way up there in my list ^^</p>
</blockquote>
<p>That would be adding unwind info to the assembly of <code>psm</code> I guess.</p>



<a name="229934967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229934967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229934967">(Mar 11 2021 at 22:02)</a>:</h4>
<p>call/cc! call/cc! call/cc!</p>



<a name="229941708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229941708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229941708">(Mar 11 2021 at 22:43)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133247">bjorn3</span> <a href="#narrow/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F/near/229925592">said</a>:</p>
<blockquote>
<p>That would be adding unwind info to the assembly of <code>psm</code> I guess.</p>
</blockquote>
<p>It does have the <code>.cfi</code> directives in the assembly that allow production of stack traces via gdb and whatever rust uses to implement backtraces at runtime.</p>



<a name="229947492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229947492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gankra <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229947492">(Mar 11 2021 at 23:32)</a>:</h4>
<p><span class="user-mention silent" data-user-id="123586">nagisa</span> <a href="#narrow/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F/near/229922360">said</a>:</p>
<blockquote>
<p>Works fine in interaction with <code>psm</code>/<code>stacker</code> is way up there in my list ^^</p>
</blockquote>
<p>could you elaborate on what this means? Is there any bugs filed about this?</p>



<a name="229947997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229947997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229947997">(Mar 11 2021 at 23:37)</a>:</h4>
<p>The crate does work in conjunction with today's algorithms to obtain a call-chain. But I'm also not super confident that what its assembly does is sufficiently similar to the code GCC or LLVM emits (especially for the more obscure architectures like, say, sparc). And so it'd be great if it just happens to work with psm, or I'll lose my sleep over it.</p>
<p>(but really feel free to mostly just ignore me, I only meant to put psm-using applications forward as a different test case compared to what you'd get out of gcc/llvm)</p>



<a name="229951612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229951612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229951612">(Mar 12 2021 at 00:10)</a>:</h4>
<p>It would be nice if the unwinder supported unwinding across signal handler frames. This is currently supported by libgcc's unwinder but not LLVM's libunwind.</p>



<a name="229951828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229951828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229951828">(Mar 12 2021 at 00:12)</a>:</h4>
<p>You need this if you want to get a backtrace from a SIGSEGV. Or at the very least you need an API to provide an initial register context to the unwinder (but then that doesn't work with nested signal handlers).</p>



<a name="229952098"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229952098" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229952098">(Mar 12 2021 at 00:14)</a>:</h4>
<p>The unwinder implementation should be <code>#![no_std]</code> and not reliant on memory allocation: it needs to be usable from a <code>SIGSEGV</code> "oh shit" context where any global state may be corrupted.</p>



<a name="229994210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229994210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Benjamin Bouvier <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229994210">(Mar 12 2021 at 08:43)</a>:</h4>
<p><span class="user-mention" data-user-id="143274">@Amanieu</span>, unclear, but isn't the <code>isSignalFrame</code> business all about supporting unwinding across signal handler frames? <a href="https://github.com/apple/llvm-project/blob/apple/main/libunwind/src/UnwindCursor.hpp#L437">https://github.com/apple/llvm-project/blob/apple/main/libunwind/src/UnwindCursor.hpp#L437</a></p>



<a name="229994514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/229994514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Benjamin Bouvier <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#229994514">(Mar 12 2021 at 08:46)</a>:</h4>
<p>For what it's worth, Wasmtime/Cranelift work with the system libunwind to support unwinding (+ get support in native tooling). Unfortunately, after a few days of work for supporting Mac M1, it seems the libunwind shipped by the system is unreliable, and doesn't match what's in Apple's LLVM fork, making it largely impossible to debug too. So we will need to consider shipping our own libunwind implementation (unless Apple ships a newer version that works, which is outside our control), and if that didn't require compiling a C++ code base, that would be certainly nice to have.</p>



<a name="230043560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230043560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230043560">(Mar 12 2021 at 15:06)</a>:</h4>
<p><span class="user-mention silent" data-user-id="389005">Benjamin Bouvier</span> <a href="#narrow/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F/near/229994210">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="143274">Amanieu</span>, unclear, but isn't the <code>isSignalFrame</code> business all about supporting unwinding across signal handler frames? <a href="https://github.com/apple/llvm-project/blob/apple/main/libunwind/src/UnwindCursor.hpp#L437">https://github.com/apple/llvm-project/blob/apple/main/libunwind/src/UnwindCursor.hpp#L437</a></p>
</blockquote>
<p>Yes but it's not implemented in LLVM's libunwind.</p>



<a name="230166184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230166184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gankra <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230166184">(Mar 13 2021 at 14:29)</a>:</h4>
<p>It's handled internally but I guess for whatever reason they don't expose it? <a href="https://reviews.llvm.org/D69677">https://reviews.llvm.org/D69677</a></p>



<a name="230182393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230182393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230182393">(Mar 13 2021 at 19:06)</a>:</h4>
<p>Actually I've just realized why this wasn't working for me: the sigreturn stub is in the VDSO but I'm using the bare-metal version of libunwind which only looks at the unwind info for the main binary.</p>



<a name="230202721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230202721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> moxian <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230202721">(Mar 14 2021 at 01:23)</a>:</h4>
<p>Drive-by comment (I'm nowhere near the target audience): Might be interesting if it had a sufficiently <code>#[repr(C)]</code> API and could be used from C/C++. Would make for a neat Rust marketing thing.</p>



<a name="230204982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230204982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230204982">(Mar 14 2021 at 02:08)</a>:</h4>
<p>There is already a standard C API for this: the libunwind API.</p>



<a name="230205038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230205038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> moxian <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230205038">(Mar 14 2021 at 02:09)</a>:</h4>
<p>well, yes, but given that we want to _rewrite_ it in pure rust (rather than simply bind to it), i'm assuming it's somewhat unideal?</p>



<a name="230205753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230205753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230205753">(Mar 14 2021 at 02:22)</a>:</h4>
<p>who would be the target of marketing of a pure Rust <code>libunwind</code>?</p>



<a name="230206185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230206185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> moxian <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230206185">(Mar 14 2021 at 02:32)</a>:</h4>
<p>Whoever needs <code>libunwind</code> functionality, but also likes the "guaranteed memory safety" kool-aid.<br>
Although, that would require these users to add <code>rust</code> to their toolchain, which might be too high of a cost for the benefit.<br>
You're right, probably not a practically useful thing beyond pure marketing.</p>



<a name="230206259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230206259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230206259">(Mar 14 2021 at 02:34)</a>:</h4>
<p>well not entirely since I'm aware of projects which opt-in to C++ solely for direct access to libraries like Eigen</p>



<a name="230206389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230206389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230206389">(Mar 14 2021 at 02:36)</a>:</h4>
<p>do you think projects would adopt Rust to access a future Rust <code>libunwind</code>?</p>



<a name="230206415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230206415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230206415">(Mar 14 2021 at 02:37)</a>:</h4>
<p>like I'm sure some would love to abandon C++ if Eigen were in any other peformant language</p>



<a name="230206600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230206600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> moxian <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230206600">(Mar 14 2021 at 02:41)</a>:</h4>
<p>No, now that you've mentioned that, I don't think <code>libunwind</code> is fancy enough on its own to pull in rust just for that. It's a small tool that people write once (if at all) and never again, and that doesn't usually bother.<br>
If we had "an ecosystem" of c-friendly libs [what libs exactly?] that might work, and having <code>libunwind</code> be a first of a kind might be a good idea, but.. that sounds like a pretty big stretch to me now that I'm typing this.</p>



<a name="230206686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230206686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230206686">(Mar 14 2021 at 02:43)</a>:</h4>
<p>given enough development time, access to the worlds domain experts and funding through grants and industry partners anything is possible!!</p>



<a name="230207077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230207077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230207077">(Mar 14 2021 at 02:51)</a>:</h4>
<p>it would be interesting to have a broader perspective of which libraries catalyze an opt-in decision</p>



<a name="230208811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230208811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230208811">(Mar 14 2021 at 03:28)</a>:</h4>
<p>Most C users already have an implementation of the <code>_Unwind_*</code> API in libgcc and LLVM's libunwind. It literally comes with their compiler.</p>



<a name="230244536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/rewriting%20libunwind%20in%20rust%3F/near/230244536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Gankra <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/rewriting.20libunwind.20in.20rust.3F.html#230244536">(Mar 14 2021 at 15:15)</a>:</h4>
<p>In mozilla's case our biggest constraint is the need for a stackwalker that can handle foreign ABIs for server-side minidump processing from crash reports, while also wanting to do some of that analysis on device at crash time. Using native tooling has benefits but also puts us at the mercy of inconsistencies. I'm not yt sure if writing our own crossplatform libunwind necessarily is the right solution at this point but we're definitely in the neighbourhood. (gimli's unwind-rs seems like an interesting starting point but windows is actually the most significant platform we care about)</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>